library

Containers

Standard Containers
A container is a holder object that stores a collection of other objects (its elements). They are implemented as class templates, which allows a great flexibility in the types supported as elements.

The container manages the storage space for its elements and provides member functions to access them, either directly or through iterators (reference objects with similar properties to pointers).

Containers replicate structures very commonly used in programming: dynamic arrays (vector), queues (queue), stacks (stack), heaps (priority_queue), linked lists (list), trees (set), associative arrays (map)...

Many containers have several member functions in common, and share functionalities. The decision of which type of container to use for a specific need does not generally depend only on the functionality offered by the container, but also on the efficiency of some of its members (complexity). This is especially true for sequence containers, which offer different trade-offs in complexity between inserting/removing elements and accessing them.

stack, queue and priority_queue are implemented as container adaptors. Container adaptors are not full container classes, but classes that provide a specific interface relying on an object of one of the container classes (such as deque or list) to handle the elements. The underlying container is encapsulated in such a way that its elements are accessed by the members of the container adaptor independently of the underlying container class used.

Container class templates

Sequence containers:
array
Array class (class template)
vector
Vector (class template)
deque
Double ended queue (class template)
forward_list
Forward list (class template)
list
List (class template)

Container adaptors:
stack
LIFO stack (class template)
queue
FIFO queue (class template)
priority_queue
Priority queue (class template)

Associative containers:
set
Set (class template)
multiset
Multiple-key set (class template)
map
Map (class template)
multimap
Multiple-key map (class template)

Unordered associative containers:
unordered_set
Unordered Set (class template)
unordered_multiset
Unordered Multiset (class template)
unordered_map
Unordered Map (class template)
unordered_multimap
Unordered Multimap (class template)

Other:
Two class templates share certain properties with containers, and are sometimes classified with them: bitset and valarray .

Member map

This is a comparison chart with the different member functions present on each of the different containers:

Legend:
C++98Available since C++98
C++11New in C++11

Sequence containers

Headers<array> <vector> <deque> <forward_list> <list>
Membersarray vector deque forward_list list
constructorimplicitvector deque forward_list list
destructorimplicit~vector ~deque ~forward_list ~list
operator=implicitoperator= operator= operator= operator=
iteratorsbeginbegin begin begin begin
before_begin
begin
endend end end end end
rbeginrbegin rbegin rbegin rbegin
rendrend rend rend rend
const iteratorscbegincbegin cbegin cbegin cbegin
cbefore_begin
cbegin
cendcend cend cend cend cend
crbegincrbegin crbegin crbegin crbegin
crendcrend crend crend crend
capacitysizesize size size size
max_sizemax_size max_size max_size max_size max_size
emptyempty empty empty empty empty
resizeresize resize resize resize
shrink_to_fitshrink_to_fit shrink_to_fit
capacitycapacity
reservereserve
element accessfrontfront front front front front
backback back back back
operator[]operator[] operator[] operator[]
atat at at
modifiersassignassign assign assign assign
emplaceemplace emplace emplace_after emplace
insertinsert insert insert_after insert
eraseerase erase erase_after erase
emplace_backemplace_back emplace_back emplace_back
push_backpush_back push_back push_back
pop_backpop_back pop_back pop_back
emplace_frontemplace_front emplace_front emplace_front
push_frontpush_front push_front push_front
pop_frontpop_front pop_front pop_front
clearclear clear clear clear
swapswap swap swap swap swap
list operationssplicesplice_after splice
removeremove remove
remove_ifremove_if remove_if
uniqueunique unique
mergemerge merge
sortsort sort
reversereverse reverse
observersget_allocatorget_allocator get_allocator get_allocator get_allocator
datadata data

Associative containers

Headers<set> <map> <unordered_set> <unordered_map>
Membersset multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap
constructorset multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap
destructor~set ~multiset ~map ~multimap ~unordered_set ~unordered_multiset ~unordered_map ~unordered_multimap
assignmentoperator= operator= operator= operator= operator= operator= operator= operator=
iteratorsbeginbegin begin begin begin begin begin begin begin
endend end end end end end end end
rbeginrbegin rbegin rbegin rbegin
rendrend rend rend rend
const iteratorscbegincbegin cbegin cbegin cbegin cbegin cbegin cbegin cbegin
cendcend cend cend cend cend cend cend cend
crbegincrbegin crbegin crbegin crbegin
crendcrend crend crend crend
capacitysizesize size size size size size size size
max_sizemax_size max_size max_size max_size max_size max_size max_size max_size
emptyempty empty empty empty empty empty empty empty
reservereserve reserve reserve reserve
element accessatat at
operator[]operator[] operator[]
modifiersemplaceemplace emplace emplace emplace emplace emplace emplace emplace
emplace_hintemplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint
insertinsert insert insert insert insert insert insert insert
eraseerase erase erase erase erase erase erase erase
clearclear clear clear clear clear clear clear clear
swapswap swap swap swap swap swap swap swap
operationscountcount count count count count count count count
findfind find find find find find find find
equal_rangeequal_range equal_range equal_range equal_range equal_range equal_range equal_range equal_range
lower_boundlower_bound lower_bound lower_bound lower_bound
upper_boundupper_bound upper_bound upper_bound upper_bound
observersget_allocatorget_allocator get_allocator get_allocator get_allocator get_allocator get_allocator get_allocator get_allocator
key_compkey_comp key_comp key_comp key_comp
value_compvalue_comp value_comp value_comp value_comp
key_eqkey_eq key_eq key_eq key_eq
hash_functionhash_function hash_function hash_function hash_function
bucketsbucketbucket bucket bucket bucket
bucket_countbucket_count bucket_count bucket_count bucket_count
bucket_sizebucket_size bucket_size bucket_size bucket_size
max_bucket_countmax_bucket_count max_bucket_count max_bucket_count max_bucket_count
hash policyrehashrehash rehash rehash rehash
load_factorload_factor load_factor load_factor load_factor
max_load_factormax_load_factor max_load_factor max_load_factor max_load_factor

AltStyle によって変換されたページ (->オリジナル) /